package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * JDBC java DataBase Connectivity
 * JDBC是java官方提供的一套接口，以标准的操作与任何数据库交互
 * 不同的数据库提供商都会实现一套对应的实现类，这套实现类一般称为“驱动”
 * 因此在操作不同数据库时，需要先下载对应的驱动类，使用JDBC接口定义的操作来
 * 操作驱动中的实现对该数据库的操作
 */
public class JDBCDemo1 {
    public static void main(String[] args) throws Exception {
        /* 使用JDBC操作数据库的基本流程：
            1.加载驱动
            2.通过DriverManager(JDBC提供的)与数据库建议链接，创建出链接对象Connection
            3.通过Connection创建用于执行SQL语句的语句对象Statement
            4.通过Statement向数据库执行SQL语句
            5.如果执行的是DQL语句(查询语句)则会得到查询结果集ResultSet
            6.遍历结果集对象获取查询出的数据
            7.与数据库断开连接 通过Connection.close()
         */


        //1.加载驱动(不同数据库提供的驱动实现类的包名类名不同 无需记 现用现查就行)
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2.与数据库链接 Connection:连接  DriverManager:驱动管理器
        Connection connection = DriverManager.getConnection(
          //格式：jdbc:mysql://主机地址信息/数据库名?一堆参数
                "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",//数据库的地址
                "root",//登录数据库时的用户名
                "root" //登录数据库时的密码
        );
        System.out.println("与数据库建立链接");
        //3.创建语句执行对象
        Statement statement = connection.createStatement();
        //4.执行创建表操作
        String sql = "CREATE TABLE userinfo( " +
                     "id INT PRIMARY KEY AUTO_INCREMENT, " +
                     "username VARCHAR(32), " +
                     "password VARCHAR(32), " +
                     "nickname VARCHAR(32), " +
                     "age INT(3) " +
                     ")";
        /* boolean execute(String sql)
            用于指定给定的SQL语句，返回值表示执行完毕后是否产生了查询结果集
            如果SQL书写有误活着执行导致数据库出错，这里都会抛出异常
            虽然该方法对于各种类型的SQL都能使用，但因为DML(数据操作语言)和DQL(数据查询语言)语句有专门的方法
            因此该方法通产用于执行DDL(数据定义语言)语句
         */
        statement.execute(sql);

        System.out.println("userinfo表创建成功");
        //与数据库断开连接
        connection.close();




    }
}
